// pages/songdetail/songdetail.js
import moment from "moment"
import request from "../../utils/request"
import pubsub from "pubsub-js"

const appInstance = getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 动态标题名
        NavigationBarTitle: '',
        // 歌曲歌星
        author: '',
        // 歌曲图片
        songImg: '',
        // 音频播放地址
        audioAdress: '',
        // 音乐是否播放中
        isPlay: false,
        // 音乐播放地址
        musicSrc: '',
        // 音乐Id
        musicId: '',
        // 音乐播放实时时间
        currentTime: '00:00',
        // 音乐总时长
        durationTime: '00:00',
        // 实时宽度
        currentWidth: ''

    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        // console.log(options.musicId);
        this.getSongDetailInfo(options.musicId)

        // this.getMusicLink(options.musicId)
        this.setData({
            musicId: options.musicId
        })

        // 判断当前页面是否在播放
        if (appInstance.globalData.isMusicPlay && appInstance.globalData.musicId === options.musicId) {
            // 修改当前 页面播放状态为TRUE
            this.setData({
                isPlay: true
            })
        }


        // 创建播放实例
        this.backgroundAudioManager = wx.getBackgroundAudioManager()
            // this.backgroundAudioManager.title = this.data.NavigationBarTitle
            // this.backgroundAudioManager.src = this.data.musicSrc
            // console.log(this.backgroundAudioManager);

        // 监听背景音乐自然暂停时间
        this.backgroundAudioManager.onEnded(() => {
                this.playState(false)
                this.setData({
                    currentWidth: 0
                })


            })
            // 监听背景音乐暂停事件
        this.backgroundAudioManager.onPause(() => {
                this.playState(false)



            })
            // 监听背景音乐开始播放事件
        this.backgroundAudioManager.onPlay(() => {
            this.playState(true)

            // 修改全局音乐播放标识

            appInstance.globalData.musicId = options.musicId

        })

        this.backgroundAudioManager.onTimeUpdate(() => {
            // console.log(this.backgroundAudioManager.currentTime * 1000);
            let currentTime = moment(this.backgroundAudioManager.currentTime * 1000).format('mm:ss');
            let currentWidth = this.backgroundAudioManager.currentTime / this.backgroundAudioManager.duration * 415;
            // console.log(currentWidth);
            this.setData({
                currentTime,
                currentWidth
            })
        })


        this.setData({
            currentWidth: 0
        })


    },


    // 改变播放状态
    playState(isPlay) {
        this.setData({
            isPlay
        })
        appInstance.globalData.isMusicPlay = isPlay
    },


    async getSongDetailInfo(musicId) {
        let songDetailInfo = await request("/song/detail", {
            ids: musicId,
        })

        let durationTime = moment(songDetailInfo.songs[0].dt).format('mm:ss')

        this.setData({
            author: songDetailInfo.songs[0].ar[0].name,
            songImg: songDetailInfo.songs[0].al.picUrl,
            durationTime
        })
        console.log(songDetailInfo);
        wx.setNavigationBarTitle({
            title: songDetailInfo.songs[0].name
        })
    },
    // 控制音乐是否播放
    playChange() {
        let isPlay = !this.data.isPlay;
        this.setData({
            isPlay
        })

        console.log('改变');
        let { musicId, musicSrc } = this.data

        this.musicControl(isPlay, musicId, musicSrc)



    },

    // 控制音乐播放暂停按钮
    async musicControl(isPlay, musicId, musicSrc) {
        if (isPlay) { //音乐播放
            if (!musicSrc) {
                // 获取音乐播放连接
                let musicLinkData = await request('/song/url', {
                    id: musicId
                })
                musicSrc = musicLinkData.data[0].url
                    // console.log(musicSrc);
                this.setData({
                    musicSrc
                })
            }
            this.backgroundAudioManager.src = musicSrc;
            this.backgroundAudioManager.title = this.data.author;
            console.log(this.backgroundAudioManager.src);
        } else { //暂停音乐
            this.backgroundAudioManager.pause()
        }
    },
    // 获取音乐播放地址
    // async getMusicLink(musicId) {
    //     let musicLinkData = await request('/song/url', {
    //             id: musicId
    //         })
    //         // console.log(musicLinkData);
    //     this.setData({
    //         musicSrc: musicLinkData.data[0].url
    //     })
    //     console.log(this.data.musicSrc);
    // },

    // 下一首
    handleSwitch(event) {
        // console.log('下一首');
        // console.log(event.currentTarget.id);
        let type = event.currentTarget.id
        this.backgroundAudioManager.pause()
        pubsub.subscribe('musicId', (msg, musicId) => {
            // console.log(musicId);
            this.getSongDetailInfo(musicId)
            this.musicControl(true, musicId)
            pubsub.unsubscribe('musicId')
        })
        pubsub.publish('switchType', type)




    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})